Server access processing system

ABSTRACT

A method, programmed medium and system are provided for preventing the denial of file system access to a plurality of clients accessing a NFS server. In one example, an NFS server is configured to listen on a server port. The server runs a separate daemon which “watches” client requests as they are received at the NFS server. The server processing system tracks the number of times a client sends consecutive TCP zero-window packets in response to a data packet from the server. If the number of zero-window packets crosses a user-defined threshold, then a routine is called to stop responding to that client using a backoff algorithm. When the server reaches a point where the number of available threads or any other relevant resource dips below a user-defined threshold, the server process starts terminating connections to the clients starting from the ones with the oldest entry in the table.

DOMESTIC PRIORITY

This application is a Continuation of U.S. patent application Ser. No.15/331,330 filed Oct. 21, 2016; which is a continuation of U.S. patentapplication Ser. No. 13/459,160, filed Apr. 28, 2012; which is aContinuation of U.S. patent application Ser. No. 12/614,511, filed Nov.9, 2009, the contents of which are herein incorporated by reference intheir entirety.

BACKGROUND

The present invention relates generally to information processingsystems and more particularly to a methodology and implementation forenabling an improved processing system for accessing servers.

The Network File System (NFS) is one of the most prevalent forms ofremote file systems in a distributed environment today. Typically an NFSserver provides file system services to thousands of clients, typicallyrunning different operating systems. Since NFS configurations arestar-based i.e., one server having multiple clients, one clientoverloading the server can cause serious degradation in file systemaccess times for the other clients.

NFS is typically transmission control protocol (TCP) based, and usessockets for server-client connection. NFS servers also have a limit onthe number of concurrent threads that can service client requests. Ifone client is running an application that is unable to read from its endof the socket in a timely manner, the TCP stack on the client systemmight reach a point where it needs to send back TCP zero-windowresponses to the server. If this client has several requests to theserver in this state, then the NFS server might not be able to servicenew client requests. The result of this is denial of file system accessto the rest of the clients.

Thus, there is a need to provide a network server access processingsystem which is enabled to avoid the problems set forth above.

SUMMARY

A method, programmed medium and system are provided for preventing thedenial of file system access to a plurality of clients accessing a NFSserver. In one example, an NFS server is configured to listen on adesignated server port. The server runs a separate daemon which“watches” client requests as they are received at the NFS server. In theexample, the server processing system tracks the number of times aclient sends consecutive TCP zero-window packets in response to a datapacket from the server. This information is maintained, for example, ina table. The NFS server is enabled to do any one of several actionsusing the information, including, resetting the connection to the clientwith an appropriate response code. If the number of zero-window packetscrosses a user-defined threshold, then a routine is called in the NFSserver to stop responding to that client using a backoff algorithm. Thealgorithm causes the NFS server to NOT respond to the next request(blackout time) for the next N seconds. If more zero-window requests arereceived, the blackout time increases by predetermined amounts, forexample, to 2*N, 4*N, 8*N and so on until a user-defined limit isreached. When the server reaches a point where the number of availablethreads or any other relevant resource dips below a user-definedthreshold, the server access process is enabled to start terminatingconnections to the clients starting from the ones with the oldest entryin the table.

BRIEF DESCRIPTION OF THE DRAWINGS

A better understanding of the present invention can be obtained when thefollowing detailed description of a preferred embodiment is consideredin conjunction with the following drawings, in which:

FIG. 1 is an illustration of one embodiment of a system in which thepresent invention may be implemented;

FIG. 2 is a block diagram showing several of the major components of anexemplary computer system or device using the present invention;

FIG. 3 is a flow chart illustrating an exemplary sequence of operationswhich may be implemented in accordance with the present invention;

FIG. 4 is another flow chart illustrating an exemplary sequence ofoperations which may be implemented in accordance with the presentinvention; and

FIG. 5 is another flow chart illustrating an exemplary sequence ofoperations which may be implemented in accordance with the presentinvention.

DETAILED DESCRIPTION

The various methods discussed herein may be implemented within acomputer system which includes processing means, memory, storage means,input means and display means. Since the individual components of acomputer system which may be used to implement the functions used inpracticing the present invention are generally known in the art andcomposed of electronic components and circuits which are also generallyknown to those skilled in the art, circuit details beyond those shownare not specified to any greater extent than that considered necessaryas illustrated, for the understanding and appreciation of the underlyingconcepts of the present invention and in order not to obfuscate ordistract from the teachings of the present invention. Although theinvention is illustrated in the context of a networked computer systemusing a laptop computer or other portable device, it is understood thatdisclosed methodology may also be applied in many other available andfuture devices and systems such as cell phones and personal wireless andother hand-held devices, including any input device, includingtouch-sensitive screens or touch-sensitive input pads, to achieve thebeneficial functional features described herein.

The present disclosure defines a method that will prevent the NFS serverfrom denying access to a large number of clients due to a large numberof concurrent requests from one or more clients that are not readingtheir data in a timely manner. The disclosed methodology is alsoapplicable to a case where the client is running an application that isintentionally attempting to freeze NFS services by not reading from itsend of the socket connections. The NFS server listens on a designatedserver port 2049. The server will run a separate daemon which will“watch” client requests as they are received at the NFS server.Specifically, the process will keep track of the number of times aclient sends consecutive TCP zero window packets (ZWPs) in response to adata packet from the server. A ZWP is a flow control mechanism that aTCP client uses to inform the server that it is not quite ready toreceive more packets as it is still processing the earlier packets.Thus, a ZWP is an indication, for example, that a client is havingtiming problems and as a result the client may tie-up server connectionresources and make them unavailable to other clients who need to accessthe resources. The number of consecutive ZWPs will be counted,incremented and maintained, for example, in a table. The table ismaintained by the process to keep a list of clients which have sent morethan a predetermined number of consecutive TCP zero-window packets inthe past. With this information, the NFS server can do any one ofseveral possible actions. For example, the NFS server is enabled toselectively reset the connection to the client with an appropriateresponse code. If the number of zero-window packets crosses auser-defined threshold, then the daemon process is enabled to call aroutine in the NFS server to stop responding to that client using abackoff algorithm. The algorithm will basically cause the NFS server toNOT respond to the next request (blackout time) for the next N seconds.If more zero-window requests are received, the blackout time increasesby predetermined amounts, for example to 2*N, 4*N, 8*N and so on until auser-defined limit.

When the server reaches a point where the number of available threads orany other relevant resource dips below a user-defined threshold, theserver process starts terminating connections to the clients startingfrom the ones with the oldest entry in the table. Using the disclosedmethodology, NFS servers can continue to provide uninterrupted serviceseven in the presence of a resource-starved client. Further, the tablecan be made accessible to the administrator, so he/she can have astatistical view of the load from each client and reallocate resourcesappropriately. The list of problem client machines could be exchangedbetween NFS servers to allow NFS servers to proactively take actionagainst a hacker that has been identified in another portion of thenetwork. When the exponential back off algorithm is used as a responseto the alert from daemon, the advantage gained is that a client thattemporarily slowed down is not penalized by cutting off communicationsabruptly

FIG. 1 illustrates an exemplary environment in which the presentinvention may be implemented. As shown, an NFS server 101 may beaccessed through an interconnection network 103, such as the Internet,by a plurality of client devices including computer terminals 105, 107and 113 and other wireless devices 109 and 111. The client devices 105,107 and 113 may be laptop computers and the wireless client devices 109and 111 may be personal wireless communication devices.

FIG. 2 illustrates several of the major components of a computer systemwhich may be used to implement the present invention. As shown, aprocessor system 201 is connected to a main bus 203. The main bus 203 isalso coupled to, inter alia, system memory 205, a local storage system207, a network interface 209, and an input interface 211. The main busis also connected to a display system 217. The input and/or displaysystem may also comprise a touch-sensitive screen or optically-sensitiveinput pad (not shown). Additional devices and bus systems, which are notshown, may also be coupled to the system main bus 203.

In FIG. 3, there is shown a flow chart describing an exemplaryoperational sequence which may be implemented in code to accomplish theresults described above. As shown, when the process is initiated, theserver is enabled to monitor or “watch” 301 server access requests andtraffic from remote computer system client devices such as computers 105and 107 and/or personal communication devices 111 and 113, or othersystems. After a data packet is sent from the server to a client device303 in response to a client request, it is determined when a totalnumber of consecutive TCP Zero Window Packets (ZWPs) are received fromthe client. When consecutive ZWPs are detected as having been receivedfrom the client 305, a total count is maintained 307 and may be kept intable form as discussed above. Whenever the number of consecutive ZWPsreceived exceeds a predetermined number 309, a backoff routine asillustrated in FIG. 4 is accessed.

As shown in FIG. 4, after having received the predetermined number ofZWPs from a client, the next ZWP received 401 will cause a first “noresponse” 403 or “wait” period “N” to begin during which no response issent from the server. If during this time period another ZWP is receivedfrom the same client 405, then a second wait period is commenced 407.The second wait period is longer than the first wait period “N” and inthe illustrated example, the second wait period is “2N” and the processgoes to a resource conserve mode as shown in FIG. 5. It is noted herethat a number of consecutive ZWPs received from a client is anindication that one client may, for example, be running an applicationthat is unable to read from its end of the socket in a timely manner,and the TCP stack on the client system might reach a point where itneeds to send back TCP zero-window responses to the server. If thisclient has several requests to the server in this state, then the NFSserver might not be able to service new client requests with the resultthat there may be a denial of file system access to the rest of theclients. Thus, limits are set on the number of ZWPs returned to theserver in order to detect and avoid this problem.

As shown in FIG. 5, in the conserve resource routine, if a ZWP is notreceived during the second wait period 501, this is an indication thatthe client machine is again processing in a timely manner and the serverprocess returns to monitor subsequent server access requests 301.However, when another ZWP is received 501, for example, during thesecond wait period, the process determines if available server resourcesare less than a predetermined minimum 503, and if so, clients aredisconnected from the server on a predetermined priority basis 507 suchas disconnecting the oldest connection first, then checking on theresource availability and if necessary, disconnecting others in orderuntil the resource availability returns to a satisfactory level and isgreater than a minimum level 509. When the resource level returns to apredetermined minimum level 509 the process returns to monitorsubsequent server access requests 301. If available server resources arenot below a minimal level 503, then a check is made to determine if thenumber of consecutive ZWPs received from the client is greater than apredetermined limit 505, and if so, the above-discussed disconnectprocess 507 is implemented. If the total number of consecutive ZWPsreceived from a client is not greater than a predetermined number 505,then the process returns to block 407 to set another wait time period tomonitor and count subsequently received ZWPs from the client. It isnoted that the termination of client connections can result either fromreceiving too many consecutive ZWPs from a client regardless of serverresource level, or from receiving a lesser number of ZWPs when theserver resource level is in a low condition, or a combination of both.Further, it is noted that there need not be two wait periods and thatthe disconnect process may be implemented in connection with only asingle wait period if server resources need to be allocated in a moretightly controlled manner. Further, the predetermined times and/orlevels of resource availability may be adjusted by the server to suitvarious situations and conditions.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the Figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

It is understood that the specific example presented herein is notintended to be limiting since the functional combinations disclosedherein may be implemented in many different environments andapplications including, for example, applications involving thevisualization of business processes and movement of emails, task lists,task list items and other system data components within an overallsystem data containment environment or application.

The method, system and apparatus of the present invention has beendescribed in connection with a preferred embodiment as disclosed herein.The disclosed methodology may be implemented in a wide range ofsequences, menus and screen designs to accomplish the desired results asherein illustrated. Although an embodiment of the present invention hasbeen shown and described in detail herein, along with certain variantsthereof, many other varied embodiments that incorporate the teachings ofthe invention may be easily constructed by those skilled in the art, andeven included or integrated into a processor or CPU or other largersystem integrated circuit or chip. The disclosed methodology may also beimplemented solely or partially in program code stored in any media,including any portable or fixed, volatile or non-volatile memory mediadevice, including CDs, RAM and “Flash” memory, or other semiconductor,optical, magnetic or other memory media capable of storing code, fromwhich it may be loaded and/or transmitted into other media and executedto achieve the beneficial results as described herein. The disclosedmethodology may also be implemented using any available input and/ordisplay systems including touch-sensitive screens andoptically-sensitive input pads. Accordingly, the present invention isnot intended to be limited to the specific form set forth herein, but onthe contrary, it is intended to cover such alternatives, modifications,and equivalents, as can be reasonably included within the spirit andscope of the invention.

What is claimed is:
 1. A computer program product for enabling serveraccess processing in a Network File System (NFS) interconnection networkincluding a server operable for transmitting data packets to a pluralityof client devices connected to said server in response to data requestsfrom said plurality of client devices to said server, the computerprogram product comprising computer readable program code stored on anon-transitory computer readable medium and configured such that whensuch program code is read by said server, the server is operable for:receiving data requests by said server from said client devices; saidserver being operable in response to said computer readable program codefor running a daemon program in a background, said daemon program beingoperable for monitoring said data requests from said client devices tosaid server, said daemon program being operable for determining when adata packet is sent from said server to a client device in response to adata request from said client device; said client device being operablefor sending zero window packets (ZWPs) from said client device to saidserver after receiving said data packet; said server being operable inresponse to said computer readable program code for receiving said ZWPssent from said client device, said daemon program being operable forcounting a number of ZWPs received from said client device, said daemonprogram being further operable to provide a ZWP count representative ofsaid number of ZWPs received from said client device; and said daemonprogram being operable for using said ZWP count to control access tosaid server by said client device.
 2. The program product as set forthin claim 1 wherein said ZWP count includes a total count of consecutiveZWPs received by said server.
 3. The program product as set forth inclaim 2 and further including: disconnecting said client device fromsaid server after said total count exceeds a first predetermined number.4. The program product as set forth in claim 2 and further including:determining a resource availability level of said server when said totalcount exceeds a first predetermined number; and disconnecting saidclient device from said server when said resource availability level isbelow a predetermined level and said total count exceeds a firstpredetermined number.
 5. The program product as set forth in claim 2 andfurther including: disabling said server from responding to said clientdevice for a first time period after said total count exceeds a firstpredetermined number.
 6. The program product as set forth in claim 5 andfurther including enabling said server to respond to said client deviceafter said first time period if no ZWPs are received by said server fromsaid client device during said first time period.
 7. The program productas set forth in claim 5 and further including: disabling said serverfrom responding to said client device for a second time period aftersaid total count exceeds a second predetermined number at a completionof said first time period, said second time period being greater thansaid first time period.
 8. The program product as set forth in claim 7and further including enabling said server to respond to said clientdevice after said second time period if no ZWPs are received by saidserver from said client device during said second time period.
 9. In aNetwork File System (NFS), a server having a processor enabled to manageserver access requests from a client device, said processor beingoperable for transmitting data packets to said client device in responseto data requests from said client device to said server, said servercomprising: receiving data requests by said server from said clientdevice; said server being operable for running a daemon program in abackground, said daemon program being operable for monitoring said datarequests from said client device to said server, said daemon programbeing operable for determining when a data packet is sent from saidserver to said client device in response to a data request from saidclient device; said client device being operable for sending zero windowpackets (ZWPs) from said client device to said server after receivingsaid data packet; said server being operable for receiving said ZWPssent from said client device, said daemon program being operable forcounting a number of ZWPs received from said client device, said daemonprogram being further operable to provide a ZWP count representative ofsaid number of ZWPs received from said client device; and said daemonprogram being operable for using said ZWP count to control access tosaid server by said client device.
 10. The server as set forth in claim9 wherein said ZWP count includes a total count of consecutive ZWPsreceived by said server.
 11. The server as set forth in claim 10 andfurther including: means for disconnecting said client device from saidserver after said total count exceeds a first predetermined number. 12.The server as set forth in claim 10 and further including: means fordisabling said server from responding to said client device for a firsttime period after said total count exceeds a first predetermined number.13. The server as set forth in claim 12 and further including means forenabling said server to respond to said client device after said firsttime period if no ZWPs are received by said server from said clientdevice during said first time period.
 14. The server as set forth inclaim 12 and further including: means for disabling said server fromresponding to said client device for a second time period after saidtotal count exceeds a second predetermined number at a completion ofsaid first time period, said second time period being greater than saidfirst time period.
 15. The server as set forth in claim 14 and furtherincluding means for enabling said server to respond to said clientdevice after said second time period if no ZWPs are received by saidserver from said client device during said second time period.
 16. ANetwork File System (NFS) including a server and at least one clientdevice accessing said server, said server being operable fortransmitting data packets to said client device in response to datarequests from said client device to said server, said server beingenabled for managing access to said server by said client device, saidserver including: receiving data requests by said server from saidclient device; said server being operable for running a daemon programin a background, said daemon program being operable for monitoring saiddata requests from said client device to said server on a designatedport, said daemon program being operable for determining when a datapacket is sent from said server to said client device in response to adata request from said client device; said client device being operablefor sending zero window packets (ZWPs) from said client device to saidserver after receiving said data packet; said server being operable forreceiving said ZWPs sent from said client device, said daemon programbeing operable for counting a number of ZWPs received from said clientdevice, said daemon program being further operable to provide a ZWPcount representative of said number of ZWPs received from said clientdevice, said ZWP count including a total count of consecutive ZWPsreceived by said server; means for enabling said server to respond tosaid client device after said first time period if no ZWPs are receivedby said server from said client device during said first time period;means for disabling said server from responding to said client devicefor a second time period after said total count exceeds a secondpredetermined number at a completion of said first time period, saidsecond time period being greater than said first time period; means forenabling said server to respond to said client device after said secondtime period if no ZWPs are received by said server from said clientdevice during said second time period; and means for disconnecting saidclient device from said server when a resource availability level isbelow a predetermined level and said total count exceeds said secondpredetermined number after said second time period.